// SSR trace. Some result
// Generated by Microsoft (R) D3D Shader Disassembler
//
//   using 3Dmigoto v1.3.16 on Wed Dec 18 07:50:41 2019
//
//
// Input signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// TEXCOORD                 0   xy          0     NONE   float   xy
// SV_POSITION              0   xyzw        1      POS   float
// SV_RenderTargetArrayIndex     0   x           2  RTINDEX    uint   x
//
//
// Output signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Target                0   xyzw        0   TARGET   float   xyzw
// SV_Target                1   xyzw        1   TARGET   float   xyzw
//
ps_5_0
dcl_globalFlags refactoringAllowed
dcl_constantbuffer cb0[51], immediateIndexed
dcl_constantbuffer cb1[160], dynamicIndexed
dcl_constantbuffer cb2[3], immediateIndexed
dcl_sampler s0, mode_default
dcl_sampler s1, mode_default
dcl_resource_texture2d (float,float,float,float) t0
dcl_resource_texture2d (float,float,float,float) t1
dcl_input_ps linear noperspective v0.xy
dcl_input_ps_siv constant v2.x, rendertarget_array_index
dcl_output o0.xyzw
dcl_output o1.xyzw
dcl_temps 18
dcl_resource_texture2d (float,float,float,float) t125
dcl_resource_texture1d (float,float,float,float) t120
ld_indexable(texture2d)(float,float,float,float) r16.xyzw, l(0, 0, 0, 0), t125.xyzw
ld_indexable(texture1d)(float,float,float,float) r17.xyzw, l(0, 0, 0, 0), t120.xyzw
utof r0.x, v2.x
add r0.x, r0.x, l(0.500000)
mov r0.y, cb0[41].x
mad r1.z, r0.x, cb1[r0.y + 158].w, cb1[r0.y + 156].z
div r0.zw, v0.xxxy, cb1[r0.y + 158].xxxy
add r0.zw, r0.zzzw, cb1[r0.y + 156].xxxy
mul r2.x, l(0.500000), cb1[r0.y + 158].w
mad r1.xy, -cb1[r0.y + 158].wwww, l(0.500000, 0.500000, 0.000000, 0.000000), r0.zwzz
mul r0.z, r0.x, cb1[r0.y + 156].w
mov r1.w, l(1.000000)
dp4 r0.w, cb0[49].xyzw, r1.xyzw
dp4 r1.w, cb0[50].xyzw, r1.xyzw
lt r2.y, -r0.w, l(0.000000)
discard_nz r2.y
lt r2.y, -r1.w, l(0.000000)
discard_nz r2.y
mul_sat r0.w, -r0.w, cb0[34].x
mul_sat r1.w, -r1.w, cb0[34].y
mul r3.w, r0.w, r1.w
mul r2.xyz, r2.xxxx, cb2[2].xyzx
dp3 r0.w, |r2.xyzx|, l(1.000000, 1.000000, 1.000000, 0.000000)
add r1.xyz, r0.wwww, r1.xyzx
if_nz cb0[35].z


  mul r2.xyzw, r1.yyyy, cb0[37].xyzw
  mad r2.xyzw, r1.xxxx, cb0[36].xyzw, r2.xyzw
  mad r2.xyzw, r1.zzzz, cb0[38].xyzw, r2.xyzw
  add r2.xyzw, r2.xyzw, cb0[39].xyzw
  
  // mad r2.x, r16.x, r17.w, r2.x
  // separates SSR vertically
  
  // mad r2.y, r16.x, r17.w, r2.y
  // horizontal
  
  div r4.xyzw, r2.xyxy, r2.wwww
  ge r2.xy, r4.zwzz, l(0.000000, 0.000000, 0.000000, 0.000000)
  ge r5.xy, l(1.000000, 1.000000, 0.000000, 0.000000), r4.zwzz
  and r2.xy, r2.xyxx, r5.xyxx
  and r0.w, r2.y, r2.x
  if_nz r0.w
    mad r4.xyzw, r4.xyzw, cb0[40].xyxy, l(-0.500000, -0.500000, -0.500000, -0.500000)
    frc r2.xy, r4.zwzz
    round_ni r4.xyzw, r4.xyzw
    add r5.xyzw, r4.zwzw, l(0.500000, 1.500000, 0.500000, 0.500000)
    mul r5.xyzw, r5.xyzw, cb0[40].zwzw
    sample_l_indexable(texture2d)(float,float,float,float) r6.x, r5.xyxx, t1.xyzw, s1, l(0.000000)
    add r4.xyzw, r4.xyzw, l(1.500000, 1.500000, 1.500000, 0.500000)
    mul r4.xyzw, r4.xyzw, cb0[40].zwzw
    sample_l_indexable(texture2d)(float,float,float,float) r6.y, r4.xyxx, t1.yxzw, s1, l(0.000000)
    sample_l_indexable(texture2d)(float,float,float,float) r6.z, r4.zwzz, t1.yzxw, s1, l(0.000000)
    sample_l_indexable(texture2d)(float,float,float,float) r6.w, r5.zwzz, t1.yzwx, s1, l(0.000000)
    add r4.xyzw, -r2.zzzz, r6.xyzw
    mad_sat r4.xyzw, r4.xyzw, l(40.000000, 40.000000, 40.000000, 40.000000), l(1.000000, 1.000000, 1.000000, 1.000000)
    lt r5.xyzw, l(0.990000, 0.990000, 0.990000, 0.990000), r6.xyzw
    and r5.xyzw, r5.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
    add r4.xyzw, r4.xyzw, r5.xyzw
    min r4.xyzw, r4.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
    add r2.zw, -r4.wwwx, r4.zzzy
    mad r2.xz, r2.xxxx, r2.zzwz, r4.wwxw
    add r0.w, -r2.x, r2.z
    mad r0.w, r2.y, r0.w, r2.x
  else
    mov r0.w, l(1.000000)
  endif
else
  mov r0.w, l(1.000000)
endif

// mad r1.x, r16.x, r17.w, r1.x
// no effect

mul r2.xyzw, r1.yyyy, cb0[30].xyzw
mad r2.xyzw, r1.xxxx, cb0[29].xyzw, r2.xyzw
mad r2.xyzw, r1.zzzz, cb0[31].xyzw, r2.xyzw
add r2.xyzw, r2.xyzw, cb0[32].xyzw

// mad r2.x, r16.x, r17.w, r2.x
// no effect

div r2.xy, r2.xyxx, r2.wwww
ge r4.xy, r2.xyxx, cb0[33].xyxx
ge r4.zw, cb0[33].zzzw, r2.xxxy
and r4.xy, r4.zwzz, r4.xyxx
and r1.w, r4.y, r4.x
if_nz r1.w
  sample_l_indexable(texture2d)(float,float,float,float) r1.w, r2.xyxx, t0.yzwx, s0, l(0.000000)
  add r1.w, r1.w, -cb0[35].x
  lt r1.w, r2.z, r1.w
  and r1.w, r1.w, l(0x3f800000)
else
  mov r1.w, l(1.000000)
endif
add r1.xyz, r1.xyzx, -cb1[68].xyzx
dp3 r1.x, r1.xyzx, cb1[60].xyzx
mad_sat r1.x, r1.x, cb0[34].z, cb0[34].w
mul r1.x, r1.x, r1.x
add r1.y, -r1.w, l(1.000000)
mad r1.x, r1.x, r1.y, r1.w
min r0.w, r0.w, r1.x
ieq r1.x, cb0[41].x, l(1)
mad r1.y, cb1[157].w, l(4.000000), l(1.000000)
mov r0.xy, v0.xyxx
add r1.z, cb1[157].w, cb1[157].w
mad r0.xyz, r0.xyzx, r1.yyyy, -r1.zzzz
add r0.xyz, r0.xyzx, l(-0.500000, -0.500000, -0.500000, 0.000000)
add r0.xyz, -|r0.xyzx|, l(0.500000, 0.500000, 0.500000, 0.000000)
mul_sat r0.xyz, r0.xyzx, l(10.000000, 10.000000, 10.000000, 0.000000)
mul r0.x, r0.y, r0.x
mul r0.x, r0.z, r0.x
add r0.y, r0.w, l(-1.000000)
mad r0.x, r0.x, r0.y, l(1.000000)
movc r0.w, r1.x, r0.x, r0.w
mul r1.xyz, r0.wwww, cb2[1].xyzx
mul r3.xyz, cb2[2].yzxy, l(-0.488603, 0.488603, -0.488603, 0.000000)
mul r1.w, r1.x, l(0.318309873)
mul r2.xyzw, r1.xwww, r3.wxyz
mul r4.xyzw, r1.yyyy, l(1.000000, 0.318309873, 0.318309873, 0.318309873)
mul r4.xyzw, r3.wxyz, r4.xyzw
mul r1.xyzw, r1.zzzz, l(1.000000, 0.318309873, 0.318309873, 0.318309873)
mul r1.xyzw, r1.xyzw, r3.wxyz
mov r5.x, r2.y
mov r5.y, r4.y
mov r5.z, r1.y
dp3 r5.x, r5.xyzx, l(0.300000, 0.590000, 0.110000, 0.000000)
mov r6.x, r2.z
mov r6.y, r4.z
mov r6.z, r1.z
dp3 r5.y, r6.xyzx, l(0.300000, 0.590000, 0.110000, 0.000000)
mov r6.x, r2.w
mov r6.y, r4.w
mov r6.z, r1.w
dp3 r5.z, r6.xyzx, l(0.300000, 0.590000, 0.110000, 0.000000)
mov r0.x, r2.x
mov r0.y, r4.x
mov r0.z, r1.x
mov r3.x, l(0.0897936225)
mul o0.xyzw, r0.xyzw, r3.xxxw
mov r5.w, l(0)
mul o1.xyzw, r3.wwww, r5.xyzw
ret
// Approximately 0 instruction slots used
